<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Cate;

class cateController extends Controller
{
    /**
     * 分类添加的页面
     *
     * @return \Illuminate\Http\Response
     */
    public function getAdd()
    {
        //
        $cate = $this->getAllCates();
        return view('admin.cate.add',['cate'=>$cate]);
    }
    /**
     * 分类的添加 
     */
    public function postInsert(Request $request)
    {   
        //提取参数
        $data = $request -> except(['_token']);

        //判断当前分类是否为顶级分类
        if($data['pid'] == '0') {
            //获取path字段值
            $data['path'] = '0';
        } else {
            //读取父级分类的信息
            $info = DB::table('cates')->where('id', '=', $data['pid'])->first();
            //拼接当前分类的path字符串
            $data['path'] = $info->path.','.$info->id;
        }

        //执行数据库插入
        $res = DB::table('cates')->insert($data);

        if($res) {
            return redirect('/cate/list')->with('info','添加成功');
        }else{
            return back();
        }

        
    }
    /**
     * 分类列表
     */
    public function getList(Request $request)
    {
        
        $cates = Cate::get();
        // dd($cates);die;
        return view('admin.cate.list',['cates'=>$cates,'request'=>$request]);
    }

    /**
     * ajax更改分类的状态
     */
    public function getAupdate(Request $request)
    {
        //获取状态
        $data = $request->only(['status']);
        //更新
        $res = DB::table('cates')
            ->where('id','=',$request->input('id'))
            ->update($data);        
        if($res){
            return 1;
        }else{
            return 2;
        }
        
    }

    /**
     * 获取当前分类的所有的信息
     */
    private function getAllCates()
    {
        //读取所有的分类信息
        //将分类信息读出来
        $cates = DB::table('cates')
            ->select(DB::raw('*, concat(path,",",id) as paths'))
            ->orderBy('paths')
            ->get();

        //格式化显示的分类信息
        $cates = $this->formatCateInfo($cates);
        //返回结果
        return $cates;
    }


    /**
     * 处理数据 格式化显示分类信息
     */
    private function formatCateInfo($cates)
    {
        foreach($cates as $k=>$v) {
            //判断当前的分类的等级
            $arr = explode(',', $v->path);
            $level = count($arr) - 1;
            //修改分类中的名称  |-----
            $v->name =  str_repeat('|--->', $level) . $v->name;
        }
        return $cates;
    }

    
}
